<html>
 <head>
  <meta charset="utf-8"/>
  <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"/>
  <title>
   主题：《R语言实战》学习笔记  | 数螺 | NAUT IDEA
  </title>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" rel="stylesheet"/>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
  <style type="text/css">
   #xmain img {
                  max-width: 100%;
                  display: block;
                  margin-top: 10px;
                  margin-bottom: 10px;
                }

                #xmain p {
                    line-height:150%;
                    font-size: 16px;
                    margin-top: 20px;
                }

                #xmain h2 {
                    font-size: 24px;
                }

                #xmain h3 {
                    font-size: 20px;
                }

                #xmain h4 {
                    font-size: 18px;
                }


                .header {
	           background-color: #0099ff;
	           color: #ffffff;
	           margin-bottom: 20px;
	        }

	        .header p {
                  margin: 0px;
                  padding: 10px 0;
                  display: inline-block;  
                  vertical-align: middle;
                  font-size: 16px;
               }

               .header a {
                 color: white;
               }

              .header img {
                 height: 25px;
              }
  </style>
  <script src="http://cdn.bootcss.com/jquery/3.0.0/jquery.min.js">
  </script>
  <script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript">
   MathJax.Hub.Config({elements: ["bbpress-forums"]});
  </script>
  <script src="http://nautstatic-10007657.file.myqcloud.com/static/css/readability.min.js" type="text/javascript">
  </script>
  <script type="text/javascript">
   $(document).ready(function() {
                 var loc = document.location;
                 var uri = {
                  spec: "http://cos.name/cn/topic/109765/",
                  host: "http://cos.name",
                  prePath: "http://cos.name",
                  scheme: "http",
                  pathBase: "http://cos.name/"
                 };
    
                 var documentClone = document.cloneNode(true);
                 var article = new Readability(uri, documentClone).parse();
     
                 document.getElementById("xmain").innerHTML = article.content;
                });
  </script>
  <!-- 1466437319: Accept with keywords: (title(0.25):R语言,主题,笔记,论坛, topn(0.433333333333):主题,笔记,帖子,R语言,会员,类别,图形,函数,文件,缺失值,示例,元素,文档,排序,数据,编码,变量,对象,矩阵,普通,字符,错误,标准差,代码,结果,数值,列表,因子,双曲,屏幕).-->
 </head>
 <body class="topic bbpress single single-topic postid-109765 single-author sidebar" onload="">
  <div class="header">
   <div class="container">
    <div class="row">
     <div class="col-xs-6 col-sm-6 text-left">
      <a href="/databee">
       <img src="http://nautidea-10007657.cos.myqcloud.com/logo_white.png"/>
      </a>
      <a href="/databee">
       <p>
        数螺
       </p>
      </a>
     </div>
     <div class="hidden-xs col-sm-6 text-right">
      <p>
       致力于数据科学的推广和知识传播
      </p>
     </div>
    </div>
   </div>
  </div>
  <div class="container text-center">
   <h1>
    主题：《R语言实战》学习笔记
   </h1>
  </div>
  <div class="container" id="xmain">
   <div class="hfeed site" id="page">
    <header class="site-header" id="masthead" role="banner">
     <div id="cos-logo">
      <a href="http://cos.name/cn">
       <img src="http://cos.name/cn/wp-content/themes/COS-forest/images/headers/cos-logo.png"/>
      </a>
     </div>
     <div class="navbar" id="navbar">
      <nav class="navigation main-navigation" id="site-navigation" role="navigation">
       <h3 class="menu-toggle">
        菜单
       </h3>
       <div class="menu-%e8%8f%9c%e5%8d%951-container">
        <ul class="nav-menu" id="menu-%e8%8f%9c%e5%8d%951">
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-407772" id="menu-item-407772">
          <a href="http://cos.name/cn/">
           论坛首页
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-407773" id="menu-item-407773">
          <a href="http://cos.name/cn/forums/">
           讨论区
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-407774" id="menu-item-407774">
          <a href="http://cos.name/cn/wp-login.php?action=register">
           注册
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-407819" id="menu-item-407819">
          <a href="http://cos.name/">
           主站
          </a>
         </li>
        </ul>
       </div>
      </nav>
      <!-- #site-navigation -->
     </div>
     <!-- #navbar -->
    </header>
    <!-- #masthead -->
    <div class="site-main" id="main">
     <div class="content-area" id="primary">
      <div class="site-content" id="content" role="main">
       <article class="post-109765 topic type-topic status-publish hentry" id="post-109765">
        <header class="entry-header">
         <h1 class="entry-title">
          《R语言实战》学习笔记
         </h1>
        </header>
        <!-- .entry-header -->
        <div class="entry-content">
         <div id="bbpress-forums">
          <div class="bbp-breadcrumb">
           <p>
            <a class="bbp-breadcrumb-home" href="http://cos.name/cn/">
             COS论坛 | 统计之都
            </a>
            <span class="bbp-breadcrumb-sep">
             ›
            </span>
            <a class="bbp-breadcrumb-root" href="http://cos.name/cn/forums/">
             讨论区
            </a>
            <span class="bbp-breadcrumb-sep">
             ›
            </span>
            <a class="bbp-breadcrumb-forum" href="http://cos.name/cn/forum/software/">
             软件应用
            </a>
            <span class="bbp-breadcrumb-sep">
             ›
            </span>
            <a class="bbp-breadcrumb-forum" href="http://cos.name/cn/forum/software/r-language/">
             S-Plus &amp; R语言
            </a>
            <span class="bbp-breadcrumb-sep">
             ›
            </span>
            <span class="bbp-breadcrumb-current">
             《R语言实战》学习笔记
            </span>
           </p>
          </div>
          <div class="bbp-template-notice info">
           <p class="bbp-topic-description">
            该主题包含 59 条回复，30个帖子，最后由
            <a class="bbp-author-avatar" href="http://cos.name/cn/profile/27273/" rel="nofollow" title="查看wangpeng692的档案">
             <img src="http://sdn.geekzu.org/avatar/e00129bc95271e0dd52cfb8688dd2cf7?s=14&amp;d=monsterid&amp;r=g"/>
            </a>
            <a class="bbp-author-name" href="http://cos.name/cn/profile/27273/" rel="nofollow" title="查看wangpeng692的档案">
             wangpeng692
            </a>
            在
            <a href="http://cos.name/cn/topic/109765/page/4/#post-411595" title="回复：《R语言实战》学习笔记">
             12 月 之前
            </a>
            更新。
           </p>
          </div>
          <div class="bbp-pagination">
           <div class="bbp-pagination-count">
            查看 15 个帖子 - 1 到 15（总计 60 个）
           </div>
           <div class="bbp-pagination-links">
            <span class="page-numbers current">
             1
            </span>
            <a class="page-numbers" href="http://cos.name/cn/topic/109765/page/2/">
             2
            </a>
            <span class="page-numbers dots">
             …
            </span>
            <a class="page-numbers" href="http://cos.name/cn/topic/109765/page/4/">
             4
            </a>
            <a class="next page-numbers" href="http://cos.name/cn/topic/109765/page/2/">
             →
            </a>
           </div>
          </div>
          <ul class="forums bbp-replies" id="topic-109765-replies">
           <li class="bbp-header">
            <div class="bbp-reply-author">
             作者
            </div>
            <!-- .bbp-reply-author -->
            <div class="bbp-reply-content">
             帖子
            </div>
            <!-- .bbp-reply-content -->
           </li>
           <!-- .bbp-header -->
           <li class="bbp-body">
            <div class="bbp-reply-header" id="post-109765">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2013年3月25日 下午4:43
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/109765/#post-109765">
               1 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-109765 -->
            <div class="odd bbp-parent-forum-999 bbp-parent-topic-109765 bbp-reply-position-1 user-id-27273 topic-author post-109765 topic type-topic status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/27273/" rel="nofollow" title="查看wangpeng692的档案">
               <img src="http://sdn.geekzu.org/avatar/e00129bc95271e0dd52cfb8688dd2cf7?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/27273/" rel="nofollow" title="查看wangpeng692的档案">
               wangpeng692
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               [s:11]仅以此贴督促自己学习R语言。
              </p>
              <pre class="highlight "># 第4章 基本数据管理
# 4.1 数据处理前的一个示例
# ----------------------------------------------------------------------------
# 代码清单4-1 创建leadership数据框
manager&lt;-c(1:5)
date&lt;-c("10/24/08","10/28/08","10/1/08","10/12/08","5/1/09")
country&lt;-c("US","US","UK","UK","UK")
gender&lt;-c("M","F","F","M","F")
age&lt;-c(32,45,25,39,99)
q1&lt;-c(5,3,3,3,2)
q2&lt;-c(4,5,5,3,2)
q3&lt;-c(5,2,5,4,1)
q4&lt;-c(5,5,5,NA,2)
q5&lt;-c(5,5,2,NA,1)
leadership&lt;-data.frame(manager,date,country,gender,age,
	q1,q2,q3,q4,q5,stringsAsFactors=FALSE)
# ----------------------------------------------------------------------------
# &gt; q4&lt;-c(5,5,5,,2)
# 错误于c(5, 5, 5, , 2) : 4元素是空的
# 这里的缺失值没有输入，运行时出现如上的提示错误，需要注意下。
# 第一次输入时将stringsAsFactors，输成了stringAsFactors,结果又出现了意外。
# ----------------------------------------------------------------------------
# 问题：
# 为每位经理人生成一个平均服从程度得分
# 重编码为缺失值
# 创建感兴趣变量的数据集
# 重编码为类别型年年龄组
# 特定时间段收集的数据上
# 数据集的组合与排序
# 4.2 创建新变量
# ----------------------------------------------------------------------------
# 代码清单4-2 创建新变量
leadership&lt;-transform(leadership,	# 此方法简化了按需创建新变量并将其保存到数据框中的过程。
	sumq=q1+q2+q3+q4+q5,
	meanq=(q1+q2+q3+q4+q5)/5)
leadership$sumq&lt;-leadership$q1+leadership$q2+leadership$q3+leadership$q4+
	leadership$q5
leadership$meanq&lt;-(leadership$q1+leadership$q2+leadership$q3+leadership$q4+
	leadership$q5)/5
attach(leadership)
leadership$sumq&lt;-q1+q2+q3+q4+q5
leadership$meanq&lt;-(q1+q2+q3+q4+q5)/5)
detach(leadership)
# ----------------------------------------------------------------------------
# 4.3 变量的重编码
# 将一个连续型变量修改为一组类别值；
# 将误编码的值替换为正确值；
# 基于一组分数线创建一个表示及格/不及格的变量。
# ----------------------------------------------------------------------------
# 将99岁年龄值重编码为缺失值
# 新建类别型变量，对年龄进行分组
leadership&lt;-within(leadership,{
	age[age==99]&lt;-NA
	agecat&lt;-NA
	agecat[age&gt;75]&lt;-"Elder"
	agecat[age&gt;=55&amp;age&lt;=75]&lt;-"Middle Aged"
	agecat[age&lt;55]&lt;-"Young"
	})
# ----------------------------------------------------------------------------
# {}里的每行代码后面是没有“,”的，第一次输入的时候全部加了“,”，悲剧了。
# 注意区别within与with，within允许你修改数据框。
# ----------------------------------------------------------------------------
# car包中recode()函数可以十分简便地重编码数值型、字符型向量或因子。
# doBy包提供了另外一个很受欢迎的函数recodevar()。
# R自带的cut()，可将一个数值型变量按值域切割为多个区间，并返回一个因子。
# 4.4 变量的重命名
# 调用一个交互式的编辑器。
fix(leadership)
# ----------------------------------------------------------------------------
# 安装reshape包
install.packages("reshape")
library(reshape)
leadership&lt;-rename(leadership,
	c(manager="managerID")
	)
names(leadership)
names(leadership)[1]&lt;-"manager"
names(leadership)
names(leadership)[1:2]&lt;-c("managerID","testDate")
names(leadership)
# ----------------------------------------------------------------------------
# 4.5 缺失值
# NA表示缺失值
# NaN非数值
# is.na()允许你检测缺失值是否存在
is.na(leadership)
is.na(leadership[,6:10])
# 缺失值被认为是不可比较的。
# 4.5.1 重编码某些值为缺失值
# ----------------------------------------------------------------------------
leadership&lt;-within(leadership,{
	age[age==39]&lt;-NA
	age[q1==2]&lt;-99
	})
leadership$age[leadership$age==99]&lt;-NA
# ----------------------------------------------------------------------------
# 4.5.2 在分析中排除缺失值
leadership&lt;-transform(leadership,
	sumq=sum(q1,q2,q3,q4,q5,na.rm=TRUE)
	# meanq=mean(q1,q2,q3,q4,q5,na.rm=TRUE)
	)
newdata&lt;-na.omit(leadership)  # 删除含有缺失值的整行。
newdata
# ----------------------------------------------------------------------------
# 这个例子似乎还有些问题，需要重新考虑下啊，可能是sum()函数还不用，这里成了每个元素相加了。
# 我想得到的是每行元素各自相加的和。
# ----------------------------------------------------------------------------
# 4.6 日期值
mydates&lt;-as.Date(c("2007-06-22","2004-02-13"))
mydates
strDate&lt;-c("01/05/1965","8/16/1975")
dates&lt;-as.Date(strDate,"%m/%d/%Y")
dates
leadership$date&lt;-as.Date(leadership$date,"%m/%d/%y")
leadership
Sys.Date()  # 返回当天日期
date() # 返回当前日期和时间
today&lt;-Sys.Date()
format(today,format="%B %d %Y")
# 返回的结果是 [1] "三月 26 2013" ，那"March 26 2013"怎么写格式化呢？
format(today,format="%A")
# 返回结果 [1] "星期二"
# 日期之间的计算
startdate&lt;-as.Date("2004-02-13")
enddate&lt;-as.Date("2004-02-14")
days&lt;-enddate-startdate
days
today&lt;-Sys.Date()
dob&lt;-as.Date("1956-10-12")
difftime(today,dob,units="weeks")
format(dob,"%A")
# 4.6.1 将日期转换为字符型变量
strDates&lt;-as.character(dates)
# 4.6.2 更进一步
help(as.Date)
help(strftime)
help(ISOdatetime)
install.packages("lubridate")
install.packages("fCalendar")
# 4.7 类型转换
# is.numeric()   as.numeric()
# is.character()  as.character()
# is.vector()  as.vector()
# is.matrix()  as.matrix()
# is.data.frame()  as.data.frame()
# is.factor()  as.factor()
# is.logical()  as.logical()
# 代码清单4-5 转换数据类型
a&lt;-c(1,2,3)
a
is.numeric(a)
is.vector(a)
a&lt;-as.character(a)
a
is.numeric(a)
is.vector(a)
is.character(a)
# 4.8 数据排序
# 创建一个新的数据集，其中各行依经理人的年龄升序排序。
newdata&lt;-leadership[order(leadership$age),]
newdata&lt;-leadership[order(-leadership$age),]
# 4.9 数据集的合并
</pre>
              <p>
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-344178">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2013年3月25日 下午4:58
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/109765/#post-344178">
               2 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-344178 -->
            <div class="even bbp-parent-forum-999 bbp-parent-topic-109765 bbp-reply-position-2 user-id-107675 post-344178 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/107675/" rel="nofollow" title="查看肖楠的档案">
               <img src="http://sdn.geekzu.org/avatar/66aa115466aeedf71937ff80c00b7982?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/107675/" rel="nofollow" title="查看肖楠的档案">
               肖楠
              </a>
              <br/>
              <div class="bbp-author-role">
               版主
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               不错哟
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-344184">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2013年3月26日 上午12:40
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/109765/#post-344184">
               3 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-344184 -->
            <div class="odd bbp-parent-forum-999 bbp-parent-topic-109765 bbp-reply-position-3 user-id-377597 post-344184 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/377597/" rel="nofollow" title="查看neo.cryptic的档案">
               <img src="http://sdn.geekzu.org/avatar/200ed4b091dc039241caa5985a0df69a?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/377597/" rel="nofollow" title="查看neo.cryptic的档案">
               neo.cryptic
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               po主辛苦了！！赞一个！！
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-344196">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2013年3月26日 上午3:01
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/109765/#post-344196">
               4 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-344196 -->
            <div class="even bbp-parent-forum-999 bbp-parent-topic-109765 bbp-reply-position-4 user-id-377241 post-344196 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/377241/" rel="nofollow" title="查看wangxiukun的档案">
               <img src="http://sdn.geekzu.org/avatar/45799dbe8a508930690e7191e5570726?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/377241/" rel="nofollow" title="查看wangxiukun的档案">
               wangxiukun
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               赞一个
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-344253">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2013年3月26日 下午2:31
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/109765/#post-344253">
               5 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-344253 -->
            <div class="odd bbp-parent-forum-999 bbp-parent-topic-109765 bbp-reply-position-5 user-id-27273 topic-author post-344253 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/27273/" rel="nofollow" title="查看wangpeng692的档案">
               <img src="http://sdn.geekzu.org/avatar/e00129bc95271e0dd52cfb8688dd2cf7?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/27273/" rel="nofollow" title="查看wangpeng692的档案">
               wangpeng692
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               [s:11]谢谢各位的鼓励，相信自己可以坚持学完这本书的，希望到时再看帖子时，不再是陌路人了。[s:11]
              </p>
              <pre class="highlight "># 4.9 数据集的合并
# 4.9.1 添加列
# inner join
# 将dataframeA和dataframeB按照ID进行了合并
total&lt;-merge(dataframeA,dataframeB,by="ID")
# 将dataframeA和dataframeB两个数据框按照ID和Country进行了合并
total&lt;-merge(dataframeA,dataframeB,by=c("ID","Country"))
# 直接横向合并两个矩阵或数据框，每个对象必须拥有相同的行数，且要以相同顺序排序
total&lt;-cbind(A,B)
# 4.9.2 添加行
# 两个数据框必须拥有相同的变量，不过它们顺序不必一定相同。
total&lt;-rbind(A,B)
# 如果dataframeA中拥有dataframeB中没有的变量，请做以下处理：
# 删除dataframeA中多余变量；
# 在dataframeB中创建追加的变量并将其值高为NA.
# 4.10 数据集取子集
# 4.10.1 选入（保留）变量
newdata&lt;-leadership[,c(6:10)]
myvars&lt;-c("q1","q2","q3","q4","q5")
newdata&lt;-leadership[myvars]
myvars&lt;-paste("q",1:5,sep="")
newdata&lt;-leadership[myvars]
# 4.10.2 剔除（丢弃）变量
myvars&lt;-names(leadership) %in% c("q3","q4")
newdata&lt;-leadership[!myvars]
newdata&lt;-leadership[c(-8,-9)]
leadership$q3&lt;-leadership$q4&lt;-NULL
# 4.10.3 选入观测
# 代码清单4-6 选入观测
newdata&lt;-leadership[1:3,]
newdata&lt;-leadership[which(leadership$gender=="M"&amp;
	leadership$age&gt;30),]
attach(leadership)
newdata&lt;-leadership[which(gender=="M" &amp; age&gt;30),]
detach(leadership)
leadership$date&lt;-as.Date(leadership$date, "%m/%d/%y")
startdate&lt;-as.Date("2009-01-01")
enddate&lt;-as.Date("2009-10-31")
newdata&lt;-leadership[which(leadership$date&gt;=startdate &amp;
	leadership$date&lt;=enddate),]
newdata
# 4.10.4 subset()函数
newdata&lt;-subset(leadership,age&gt;=35|age&lt;24,
	select=c(q1,q2,q3,q4))
newdata&lt;-subset(leadership,gender=="M"&amp;age&gt;25,
	select=gender:q4)
# 4.10.5 随机抽样
mysample&lt;-leadership[sample(1:nrow(leadership),3,replace=FALSE),]
# 4.11 使用SQL语句操作数据框
install.packages("sqldf")
library("sqldf")
newdf&lt;-sqldf("select * from mtcars where carb=1 order by mpg",
	row.names=TRUE)
newdf
sqldf("select avg(mpg) as avg_mpg, avg(disp) as avg_disp, gear
</pre>
              <p>
              </p>
              <p>
               第4章的内容结束了。
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-344257">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2013年3月26日 下午3:56
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/109765/#post-344257">
               6 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-344257 -->
            <div class="even bbp-parent-forum-999 bbp-parent-topic-109765 bbp-reply-position-6 user-id-27273 topic-author post-344257 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/27273/" rel="nofollow" title="查看wangpeng692的档案">
               <img src="http://sdn.geekzu.org/avatar/e00129bc95271e0dd52cfb8688dd2cf7?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/27273/" rel="nofollow" title="查看wangpeng692的档案">
               wangpeng692
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               [s:14]第5章了
              </p>
              <pre class="highlight "># 第5章 高级数据管理
# 5.1 一个数据处理难题
# 5.1-5.3主要就是为了解决以下问题：
# 给所有学生确定一个单一的成绩衡量指标？
#    三科考试成绩是无法比较的，需要将其转换为可比较的单元。
# 将前20%的学生评定为A，接下来20%的学生评定为B？
#    需要一种方法来确定某个学生在前述得分上百分比排名。
# 按字母顺序对学生排序？
#    需要将姓和名拆开。
Students &lt;- c("John Davis", "Angela Williams", "Bullwinkle Moose",
	"David Jones", "Janice Markhammer", "Cheryl Cushing",
	"Reuven Ytzrhak", "Greg Knox", "Joel England", "Mary Rayburn")
Maths &lt;- c(502, 600, 412, 358, 495, 512, 410, 625, 573, 522)
Science &lt;- c(95, 99, 80, 82, 75, 85, 80, 95, 89, 86)
English &lt;- c(25, 22, 18, 15, 20, 28, 15, 30, 27, 18)
Score &lt;- data.frame(Students, Maths, Science, English)
# 5.2 数值和字符处理函数
# 5.2.1 数学函数
# abs(x) 绝对值
# sqrt(x) 平方根
# ceiling(x) 不小于x的最小整数
# floor(x) 不大于x的最大整数
# trunc(x) 向0的方向截取的x中的整数部分
# round(x, digits=n) 将x舍入为指定位的小数
# signif(x,digits=n) 将x舍入为指定的有效数字位数
# cos(x)\sin(x)\tan(x) 余弦、正弦、正切
# acos(x)\asin(x)\atan(x) 反余弦、反正弦、反正切
# cosh(x)\sinh(x)\tanh(x) 双曲余弦、双曲正弦、双曲正切
# Acosh(x)\asinh(x)\atanh(x) 反双曲余弦、反双曲正弦、把双曲正切
# log(x,base=n) 对x取以n为底的对数
# log(x) 自然对数
# log10(x) 以10为底的对数
# exp(x) 指数函数
# 5.2.2 统计函数
# mean(x) 平均数
# Median(x) 中位数 首字母要大写哦！
# sd(x) 标准差
# var(x) 方差
# mad(x) 绝对中位数差   这个不咋地懂啊！
# quantile(x,probs) 求分位数
# range(x) 求值域
# sum(x) 求和
# diff(x, lag=n) 滞后差分
# min(x) 求最小值
# max(x) 求最大值
# scale(x, center=TRUE, scale=TRUE) 为数据对象x按列进行中心化或标准化
# -----------------------------------------------------------
# 代码清单5-1 均值和标准差的计算
x &lt;- c(1:8)
meanx &lt;- mean(x)
sdx &lt;- sd(x)
n &lt;- length(x)
meanx &lt;- sum(x)/n
css &lt;- sum((x-meanx)^2)
sdx &lt;- sqrt(css/ (n-1))
meanx
sdx
# -----------------------------------------------------------
# -----------------------------------------------------------
# 数据的标准化
# 要对每一列进行任意均值和标准差的标准经，可以使用如下的代码：
# newdata &lt;- scale(mydata)*SD + M
# 对指定列而不是整个矩阵或数据框进行标准化，可用以下代码：
# newdata &lt;- transform(mydata, myvar = scale(myvar)*10+50)
# -----------------------------------------------------------
# 5.2.3 概率函数
</pre>
              <p>
              </p>
              <p>
               明天开始学习概率函数。[s:18]
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-344271">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2013年3月27日 上午1:18
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/109765/#post-344271">
               7 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-344271 -->
            <div class="odd bbp-parent-forum-999 bbp-parent-topic-109765 bbp-reply-position-7 user-id-379395 post-344271 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/379395/" rel="nofollow" title="查看key的档案">
               <img src="http://sdn.geekzu.org/avatar/29b28429309e0e229354e1079e836202?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/379395/" rel="nofollow" title="查看key的档案">
               key
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               赞一个 ~[s:13]
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-344330">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2013年3月27日 下午1:43
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/109765/#post-344330">
               8 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-344330 -->
            <div class="even bbp-parent-forum-999 bbp-parent-topic-109765 bbp-reply-position-8 user-id-27273 topic-author post-344330 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/27273/" rel="nofollow" title="查看wangpeng692的档案">
               <img src="http://sdn.geekzu.org/avatar/e00129bc95271e0dd52cfb8688dd2cf7?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/27273/" rel="nofollow" title="查看wangpeng692的档案">
               wangpeng692
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               谢谢key的鼓励。努力！
              </p>
              <pre class="highlight "># 5.3 数据处理难题的一套解决方案
# -----------------------------------------------------------
# 代码清单5-6 示例的一种解决方案
options(digits=2)
Student &lt;- c("John Davis", "Angela Williams", "Bullwinkle Moose",
	"David Jones", "Janice Markhammer", "Cheryl Cushing",
	"Reuven Ytzrhak", "Greg Knox", "Joel England", "Mary Rayburn")
Math &lt;- c(502, 600, 412, 358, 495, 512, 410, 625, 573, 522)
Science &lt;- c(95, 99, 80, 82, 75, 85, 80, 95, 89, 86)
English &lt;- c(25, 22, 18, 15, 20, 28, 15, 30, 27, 18)
roster &lt;- data.frame(Student, Math, Science, English,
	stringsAsFactors=FALSE)
z &lt;- scale(roster[,2:4])
score &lt;- apply(z, 1, mean)
roster &lt;- cbind(roster, score)
y &lt;- quantile(score, c(.8, .6, .4, .2))
roster$grade[score &gt;= y[1]] &lt;- "A"
roster$grade[score &gt;= y[2] &amp; score &lt;y[1]] &lt;- "B"
roster$grade[score &gt;= y[3] &amp; score &lt;y[2]] &lt;- "C"
roster$grade[score &gt;= y[4] &amp; score &lt;y[3]] &lt;- "D"
roster$grade[score &lt;y[4]] &lt;- "E"
name &lt;- strsplit((roster$Student), " ")
name
Lastname &lt;- sapply(name, "[", 2)
Firstname &lt;- sapply(name, "[", 1)
roster &lt;- cbind(Firstname, Lastname, roster[, -1])
roster &lt;- roster[order(Lastname, Firstname), ]
roster
roster &lt;- roster[order(score),]   # 再次使用排序时，怎么都得不到正确的结果
roster
# -----------------------------------------------------------
# 5.4 控制流
# -----------------------------------------------------------
# 5.4.1 重复和循环
# 1.for结构
# for(var in seq) statement
for(i in 1:10) print(paste(i,"Hello",sep=","))
# 2.while结构
# while (cond) statement
i &lt;- 10
while (i&gt;0) {print(paste(i, "Hello", sep=",")); i &lt;- i-1}
# 5.4.2 条件执行
# 1.if-else结构
# if (cond) statement
# if (cond) statement else statement2
# 2.ifelse结构
# ifelse(cond, statement1, statement2)
# 3.switch结构
# switch(expr, ...)
# 代码清单5-7 一个switch示例
feelings &lt;- c("sad", "afraid")
for (i in feelings)
  print(
    switch(i,
      happy = "I am glad you are happy",
      afraid = "There i nothing to fear",
      sad = "Cheer up",
      angry = "Calm down now"
    )
  )
# -----------------------------------------------------------
# 5.5 用户自编函数
# -----------------------------------------------------------
# 代码清单5-8 mystats():一个由用户编写的描述性统计量计算函数
mystats &lt;- function(x, parametric=TRUE, print=FALSE) {
	if (parametric) {
		center &lt;- mean(x); spread &lt;- sd(x)
	} else {
		center &lt;- median(x); spread &lt;- mad(x)
	}
	if (print &amp; parametric) {
		cat("Mean=", center, "\n", "SD=", spread, "\n")
	}	else if (print &amp; !parametric) {
		cat("Median=", center, "\n", "MAD=", spread, "\n")
	}
	result &lt;- list(center=center, spread=spread)
	return(result)
  }
set.seed(1234)
x &lt;- rnorm(500)
y &lt;- mystats(x)
y
y &lt;- mystats(x, parametric=FALSE, print=TRUE)
mydate &lt;- function(type="long") {
  switch(type,
    long = format(Sys.time(), "%A %B %d %Y"),
    short = format(Sys.time(), "%m-%d-%y"),
    cat(type, "is not a recognized type\n")
  )
 }
mydate("long")
mydate("short")
mydate()
mydate("medium")
# warning() 生成一条错误提示信息
# message() 生成一条诊断信息
# stop() 停止当前表达式的执行并提示错误
# -----------------------------------------------------------
# 5.6 整合与重构
# 5.6.1 转置
# ------------------------------------------------------------
# 代码清单5-9 数据集的转置
cars &lt;- mtcars[1:5,1:4]
cars
t(cars) # t()对数据集的转置
# ------------------------------------------------------------
# 5.6.2 整合数据
# ------------------------------------------------------------
# 代码清单5-10 整合数据
options(digits=3)
attach(mtcars)
aggdata &lt;- aggregate(mtcars, by=list(cyl,gear), FUN=mean, na.rm=TRUE)
aggdata
# ------------------------------------------------------------
# 5.6.3 reshape包
# ------------------------------------------------------------
install.packages("reshape")
# 1 融合
ID &lt;- c(1,1,2,2)
Time &lt;- c(1,2,1,2)
X1 &lt;- c(5,3,6,2)
X2 &lt;- c(6,5,1,4)
mydata &lt;- data.frame(ID, Time, X1, X2, stringsAsFactors=FALSE)
mydata
library(reshape)
md &lt;- melt(mydata, id=c("ID", "Time"))
md
# 2 重铸
cast(md, ID~variable, mean)
cast(md, Time~variable, mean)
cast(md, ID~Time, mean)
cast(md, ID+Time~variable)
cast(md, ID+variable~Time)
cast(md, ID~variable+Time)
# ------------------------------------------------------------
</pre>
              <p>
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-344333">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2013年3月27日 下午2:26
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/109765/#post-344333">
               9 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-344333 -->
            <div class="odd bbp-parent-forum-999 bbp-parent-topic-109765 bbp-reply-position-9 user-id-375409 post-344333 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/375409/" rel="nofollow" title="查看zggjtsgzczh的档案">
               <img src="http://sdn.geekzu.org/avatar/79fd3c1e1ddfb0a43ba2d937049e5513?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/375409/" rel="nofollow" title="查看zggjtsgzczh的档案">
               zggjtsgzczh
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               是R in Action中的R代码？别忘了，最后在1#加一个代码段索引，作为本帖的contents list[s:13]
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-344395">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2013年3月28日 下午2:07
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/109765/#post-344395">
               10 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-344395 -->
            <div class="even bbp-parent-forum-999 bbp-parent-topic-109765 bbp-reply-position-10 user-id-27273 topic-author post-344395 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/27273/" rel="nofollow" title="查看wangpeng692的档案">
               <img src="http://sdn.geekzu.org/avatar/e00129bc95271e0dd52cfb8688dd2cf7?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/27273/" rel="nofollow" title="查看wangpeng692的档案">
               wangpeng692
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               谢谢 zggjtsgzczh 的提示，不成烂尾楼偶就很开心了。[s:11]
               <br/>
               是 R in Action
              </p>
              <p>
               回头将第一部分，第1-5章再重新学一遍。
               <br/>
               有个疑问，使用如下代码时，并没有像书中说的，会在pdf文件与屏幕上同时图形，只在文件中出现了。
              </p>
              <pre class="highlight ">sink("myoutput", append=TRUE, split=TRUE)
pdf("mygraphs.pdf")
source("script1.R")	# 奇怪的是使用代码清单1-1并没有在屏幕上显示结果
</pre>
              <p>
              </p>
              <p>
               以下为第1章的学习笔记
              </p>
              <pre class="highlight "># Chart1 R语言介绍
# 1.1 为何要使用R？
# 1.2 R的获取和安装
# 1.3 R的使用
# 1.4 包
# 1.5 批处理
# 1.6 将输出用为输入——结果的重用
# 1.7 处理大数据集
# 1.8 示例实践
# 1.1 为何要使用R？
# -----------------------------------------------------------------------------
# 免费
# 强大的制图功能
# 1.2 R的获取和安装
# -----------------------------------------------------------------------------
# &lt;a href="http://cran.r-project.org" rel="nofollow"&gt;http://cran.r-project.org&lt;/a&gt;
# 附录H描述了如何对R进行版本升级。
# 1.3 R的使用
# 1.3.1 新手上路
# 1.3.2 获取帮助
# 1.3.3 工作空间
# 1.3.4 输入和输出
# -----------------------------------------------------------------------------
# 赋值符号 &lt;-
# 注释符号 #
# 代码清单1-1 一个R会话示例
age&lt;-c(1,3,5,2,11,9,3,9,12,3)
weight&lt;-c(4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1)
mean(weight)
sd(weight)
cor(age,weight)
plot(age,weight)
q()
demo(graphics)	# 可了解R画的图形
demo(Hershey)
demo(persp)
demo(image)
help.start()	# 打开帮助文档首页
?foo			# 查看函数foo的帮助
??foo			# 以foo为关键词搜索本地帮助文档
example("foo")	# 函数foo的使用示例
RSiteSearch("foo")	# 以foo为关键词搜索在线文档和邮件列表存档
apropos("foo", mode="function")	# 列出名称中含有foo的所有可用函数
data()		# 列出当前已加载包中所含有的所有可用示例数据集
vignette()		# 列出当前已安装包中所有可用的vignette文档
vignette("foo")	# 为主题foo显示指定的vignette文档
getwd()	# 显示当前的工作目录
# setwd("mydirectory") 修改当前工作目录为mydirectory
ls()		# 列出当前工作空间中的对象
# rm(objectlist)	移除一个或多个对象
rm(list=ls())
help(options)	# 显示可用选项的说明
options()	# 显示或设置当前选项
# history(#) 显示最近使用过的#个命令（默认25）
# savehistory("myfile") 保存命令历史
# loadhistory("myfile") 载入一个命令历史文件
# save.image("myfile") 保存工作空间
# save(objectlist, file="myfile") 保存指定对象到一个文件中
# load("myfile")	读取一个工作空间到当前会话中
q()	# 退出R
dir.create()	# 创建目录
# 代码清单1-2 用于管理R工作空间的命令使用示例
setwd("C:/myprojects/project1")
options()
options(digits=3)
x&lt;-runif(20)
summary(x)
hist(x)
savehistory()
save.image()
q()
# source("filename")	执行脚本
# sink("filename")	将输出到filename中
# sink("filename", append=TRUE, split=TRUE)
# append=TRUE 追加到文件，而不是覆盖 split=TRUE 同时输出到文件并发送到屏幕中
# pdf("filename.pdf")	PDF文件
# win.metafile("filename.wmf")	Windows图元文件
# png("filename.png")	PNG文件
# jpeg("filename.jpg")	JPEG文件
# bmp("filename.bmp")	BMP文件
# postscript("filename.ps")  PostScript文件
source("script1.R")	# 仅显示在屏幕上 使用代码清单1-1
sink("myoutput", append=TRUE, split=TRUE)
pdf("mygraphs.pdf")
source("script1.R")	# 奇怪的是使用代码清单1-1并没有在屏幕上显示结果
sink()
dev.off()
source("script1.R")
# 1.4 包
# 1.4.1 什么是包
# 1.4.2 包的安装
# 1.4.3 包的载入
# 1.4.4 包的使用方法
# -----------------------------------------------------------------------------
# 下载地址: &lt;a href="http://cran.r-project.ort/web/packages" rel="nofollow"&gt;http://cran.r-project.ort/web/packages&lt;/a&gt;
.libPaths()		# 显示库所在的位置
library()		# 显示库中有哪些程序包
search()		# 显示哪些包已加载并可使用
install.packages("gclus")	# 下载安装gclus包
installed.packages()	# 查看已安装包的描述
update.packages()		# 更新已经安装的包
# help(package="package_name")可以输出函数名称与数据集的列表
help(package="vcd")
# 1.5 批处理
# -----------------------------------------------------------------------------
# "C:\Program Files\R\R-2.13.0\bin\R.exe" CMD BATCH
# --vanilla --slave "c:\my projects\myscript.R"
# 参阅An Introduction to R
# 1.6 将输出用为输入——结果的重用
# -----------------------------------------------------------------------------
lm(mpg~wt, data=mtcars)
lmfit &lt;- lm(mpg~wt, data=mtcars)
lmfit
summary(lmfit)
plot(lmfit)
cook &lt;- cooks.distance(lmfit)
cook
plot(cook)
# predict(lmfit, mynewdata)
# 要了解某个函数的返回值，查阅"Value"部分即可
?lm
# 1.7 处理大数据集
# -----------------------------------------------------------------------------
# 大数据集的管理和分析问题留待附录G中讨论
# 1.8 示例实践
# -----------------------------------------------------------------------------
# 代码清单1-3 使用一个新的包
help.start()	# 打开一个帮助文档首页，并查看其中的“Introduction to R”
install.packages("vcd")		# 安装vcd包
	# 包的路径：C:\Documents and Settings\wangp\Local Settings\Temp
	#           \RtmpUlHfpZ\downloaded_packages
help(package="vcd")	# 列出vcd包中可用的函数和数据集
library("vcd")		# 载入vcd包
help(Arthritis)
?Arthritis		# 阅读Arthritis的数据描述
Arthritis		# 显示数据的明细
Arthritis[order(-Arthritis$Age),]		# 按年龄降序排序
example(Arthritis)		# 运行数据集Arthritis自带的示例
q()	# 退出
</pre>
              <p>
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-344472">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2013年3月29日 下午3:36
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/109765/#post-344472">
               11 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-344472 -->
            <div class="odd bbp-parent-forum-999 bbp-parent-topic-109765 bbp-reply-position-11 user-id-27273 topic-author post-344472 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/27273/" rel="nofollow" title="查看wangpeng692的档案">
               <img src="http://sdn.geekzu.org/avatar/e00129bc95271e0dd52cfb8688dd2cf7?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/27273/" rel="nofollow" title="查看wangpeng692的档案">
               wangpeng692
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
              </p>
              <pre class="highlight "># 当我通过创建新程序脚本时，若文件名含中文，则会出现以下错误提示
# 错误: 'utf8towcs'里的输入'E:\stat_2013\R\Code_example\Chart2 创建数据集.R'不对
# 第1章的输出显示结果到现在还是未能解决！
# 第2章 创建数据集
# 2.1 数据集的概念
# 2.2 数据结构
# 2.3 数据的输入
# 2.4 数据集的标注
# 2.5 处理数据对象的实用函数
# 2.1 数据集的概念
# ---------------------------------------------------------------------------
# R包括标量、向量、数组、数据框和列表。
# R可以处理的数据类型：数值型、字符型、逻辑型、复数型、原生型。
# R将实例标识符称为rownames，将类别型变量称为factors。
# 2.2 数据结构
# 2.2.1 向量
# 2.2.2 矩阵
# 2.2.3 数组
# 2.2.4 数据框
# 2.2.5 因子
# 2.2.6 列表
# ---------------------------------------------------------------------------
a &lt;- c(1, 2, 5, 3, 6, -2, 4)
b &lt;- c("one", "two", "three")
c &lt;- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)
a[3]
a[c(1,3,5)]
a[2:6]
# 代码清单2-1 创建矩阵
y &lt;- matrix(1:20, 5, 4)
# 原语句为 y &lt;- matrix(1:20, nrow=5, ncol=4)
y &lt;- matrix(1:20, 5, 4, TRUE)		# 按行填充
cells &lt;- c(1, 26, 24, 68)
rnames &lt;- c("R1", "R2")
cnames &lt;- c("C1", "C2")
mymatrix &lt;- matrix(cells, 2, 2, TRUE, list(rnames, cnames))
mymatrix
# 代码清单2-2 矩阵下标的使用
x &lt;- matrix(1:10, 2)
x[2, ]
x[, 2]
x[1,4]
x[1, c(4,5)]
# 代码清单2-3 创建一个数组
dim1 &lt;- paste("A", 1:2, sep="")
dim2 &lt;- paste("B", 1:3, sep="")
dim3 &lt;- paste("C", 1:4, sep="")
z &lt;- array(1:24, c(2, 3, 4), list(dim1, dim2, dim3))
z
z[1, 2, 3]
# 代码清单2-4 创建一个数据框
patientID&lt;-c(1,2,3,4)
age&lt;-c(25,34,28,52)
diabetes&lt;-c("Type1","Type2","Type1","Type1")
status&lt;-c("Poor","Improved","Excellent","Poor")
patientdata&lt;-data.frame(patientID,age,diabetes,status)
patientdata
# 代码清单2-5 选取数据框中的元素
patientdata[1:2]
patientdata[c("patientID","age")]
patientdata$patientID
table(patientdata$diabetes,patientdata$status)
summary(mtcars$mpg)
plot(mtcars$mpg, mtcars$disp)
plot(mtcars$mpg, mtcars$wt)
attach(mtcars)
plot(mpg, disp)
plot(mpg, wt)
detach(mtcars)
with(mtcars,{
  summary(mpg,disp,wt)
  plot(disp,mpg)
  plot(wt,mpg)
})
patientdata&lt;-data.frame(patientID,age,diabetes,status,row.names=patientID)
# 代码清单2-6 因子的使用
patientID&lt;-c(1,2,3,4)
age&lt;-c(25,34,28,52)
diabetes&lt;-c("Type1","Type2","Type1","Type1")
status&lt;-c("Poor","Improved","Excellent","Poor")
diabetes&lt;-factor(diabetes)
status&lt;-factor(status,levels=c("Poor","Improved","Excellent"))
patientdata&lt;-data.frame(patientID,age,diabetes,status)
str(patientdata)		# 提供某个对象的信息
summary(patientdata)
# 代码清单2-7 创建一个列表
g&lt;-"My First List"
h&lt;-c(25,26,18,39)
j&lt;-matrix(1:10,nrow=5)
k&lt;-c("one","two","three")
mylist&lt;-list(title=g,ages=h,j,k)
mylist
mylist[[3]]
mylist[["ages"]]
# 2.3 数据的输入
# 2.3.1 使用键盘输入数据
# 2.3.2 从带分隔符的文本文件导入数据
# 2.3.3 导入Excel数据
# 2.3.4 导入XML数据
# 2.3.5 从网页抓取数据
# 2.3.6 导入SPSS数据
# 2.3.7 导入SAS数据
# 2.3.8 导入Stata数据
# 2.3.9 导入netCDF数据
# 2.3.10 导入HDF5数据
# 2.3.11 访问数据库管理系统
# 2.3.12 通过Stat/Transfer导入数据
# -------------------------------------------------------------------------
# 这里只选择性学习下文本文件的导入
# mydataframe &lt;- read.table(file, header=logical_value,
# 	sep="delimiter", row.names="name")
# 2.4 数据集的标注
# 2.4.1 变量标签
# 2.4.2 值标签
# -------------------------------------------------------------------------
# patientdata$gender &lt;- factor(patientdata$gender,
# 	levels=c(1,2),
# 	labels=c("male", "female"))
# 2.5 处理数据对象的实用函数
# -------------------------------------------------------------------------
# length(object)		显示对象中元素/成分的数量
# str()			显示某个对象的结构
# names()			显示某对象中各成分的名称
# cbind()			按列合并对象
# rbind()			按行合并对象
# ls()			显示当前的对象列表
# rm()			删除对象
</pre>
              <p>
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-344474">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2013年3月29日 下午3:56
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/109765/#post-344474">
               12 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-344474 -->
            <div class="even bbp-parent-forum-999 bbp-parent-topic-109765 bbp-reply-position-12 user-id-375409 post-344474 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/375409/" rel="nofollow" title="查看zggjtsgzczh的档案">
               <img src="http://sdn.geekzu.org/avatar/79fd3c1e1ddfb0a43ba2d937049e5513?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/375409/" rel="nofollow" title="查看zggjtsgzczh的档案">
               zggjtsgzczh
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               看看是否能够解决你在10#提出的疑惑，我这边没有中文版无法对照
              </p>
              <p>
               Let’s put it all together with an example. Assume that you have three script files con-
               <br/>
               taining R code (script1.R, script2.R, and script3.R). Issuing the statement
              </p>
              <pre class="highlight ">source("script1.R")</pre>
              <p>
               will submit the R code from script1.R to the current session and the results will appear
               <br/>
               on the screen.
               <br/>
               If you then issue the statements
              </p>
              <pre class="highlight ">sink("myoutput", append=TRUE, split=TRUE)
pdf("mygraphs.pdf")
source("script2.R")
</pre>
              <p>
               the R code from file script2.R   will be submitted, and the results will again appear on
               <br/>
               the screen. In addition, the text output will be appended to the file myoutput , and the
               <br/>
               graphic output will be saved to the file mygraphs.pdf .
               <br/>
               Finally, if you issue the statements
              </p>
              <pre class="highlight ">sink()
dev.off()
source("script3.R")
</pre>
              <p>
               the R code from script3.R will be submitted, and the results will appear on the screen. This
               <br/>
               time, no text or graphic output is saved to files. The sequence is outlined in figure 1.6.
               <br/>
               R provides quite a bit of flexibility and control over where input comes from and
               <br/>
               where it goes. In section 1.5 you’ll learn how to run a program   in batch mode.
              </p>
              <p>
               援引自R in Action p.39   1.3.4  Input and output
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-344476">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2013年3月29日 下午4:19
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/109765/#post-344476">
               13 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-344476 -->
            <div class="odd bbp-parent-forum-999 bbp-parent-topic-109765 bbp-reply-position-13 user-id-338 post-344476 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/338/" rel="nofollow" title="查看wangfengxi的档案">
               <img src="http://sdn.geekzu.org/avatar/aae6eaaeb6cae6f40493b35d85df95a6?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/338/" rel="nofollow" title="查看wangfengxi的档案">
               wangfengxi
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               挺好的 谢谢 楼主加油
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-344639">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2013年3月31日 下午1:14
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/109765/#post-344639">
               14 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-344639 -->
            <div class="even bbp-parent-forum-999 bbp-parent-topic-109765 bbp-reply-position-14 user-id-27273 topic-author post-344639 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/27273/" rel="nofollow" title="查看wangpeng692的档案">
               <img src="http://sdn.geekzu.org/avatar/e00129bc95271e0dd52cfb8688dd2cf7?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/27273/" rel="nofollow" title="查看wangpeng692的档案">
               wangpeng692
              </a>
              <br/>
              <div class="bbp-author-role">
               普通会员
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               回复 第12楼 的 zggjtsgzczh：谢谢，中文版与您提供的英文版本是一样的描述。
              </p>
              <p>
               script2.R中的代码如下：
              </p>
              <pre class="highlight "># 代码清单1-1 一个R会话示例
age&lt;-c(1,3,5,2,11,9,3,9,12,3)
weight&lt;-c(4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1)
mean(weight)
sd(weight)
cor(age,weight)
plot(age,weight)
</pre>
              <p>
               这段代码会有一幅图，使用如下代码执行时，只在PDF文件中保存了图形，而在R窗口中并未出现该图形。
              </p>
              <p>
              </p>
              <pre class="highlight ">sink("myoutput", append=TRUE, split=TRUE)
pdf("mygraphs.pdf")
source("script1.R")    # 奇怪的是使用代码清单1-1并没有在屏幕上显示结果
</pre>
              <p>
              </p>
              <p>
               谢谢wangfengxi鼓励……
              </p>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
            <div class="bbp-reply-header" id="post-344652">
             <div class="bbp-meta">
              <span class="bbp-reply-post-date">
               2013年3月31日 下午2:53
              </span>
              <a class="bbp-reply-permalink" href="http://cos.name/cn/topic/109765/#post-344652">
               15 楼
              </a>
              <span class="bbp-admin-links">
              </span>
             </div>
             <!-- .bbp-meta -->
            </div>
            <!-- #post-344652 -->
            <div class="odd bbp-parent-forum-999 bbp-parent-topic-109765 bbp-reply-position-15 user-id-20 post-344652 reply type-reply status-publish hentry">
             <div class="bbp-reply-author">
              <a class="bbp-author-avatar" href="http://cos.name/cn/profile/20/" rel="nofollow" title="查看ypchen的档案">
               <img src="http://sdn.geekzu.org/avatar/b65024a818a1283259729da5481f388f?s=80&amp;d=monsterid&amp;r=g"/>
              </a>
              <br/>
              <a class="bbp-author-name" href="http://cos.name/cn/profile/20/" rel="nofollow" title="查看ypchen的档案">
               ypchen
              </a>
              <br/>
              <div class="bbp-author-role">
               版主
              </div>
             </div>
             <!-- .bbp-reply-author -->
             <div class="bbp-reply-content">
              <p>
               楼主 我打算把你这帖子的链接放到 R语言实战的主页上了
               <a href="http://cos.name/2013/03/r-in-action/" rel="nofollow">
                http://cos.name/2013/03/r-in-action/
               </a>
               你可要加油啊
              </p>
              <div class="bbp-signature">
               <p>
                雪晴数据网（
                <a class="d4pbbc-url" href="http://www.xueqing.tv" target="_blank">
                 http://www.xueqing.tv
                </a>
                ） 是以数据科学为主题的学习型在线社区
               </p>
              </div>
             </div>
             <!-- .bbp-reply-content -->
            </div>
            <!-- .reply -->
           </li>
           <!-- .bbp-body -->
           <li class="bbp-footer">
            <div class="bbp-reply-author">
             作者
            </div>
            <div class="bbp-reply-content">
             帖子
            </div>
            <!-- .bbp-reply-content -->
           </li>
           <!-- .bbp-footer -->
          </ul>
          <!-- #topic-109765-replies -->
          <div class="bbp-pagination">
           <div class="bbp-pagination-count">
            查看 15 个帖子 - 1 到 15（总计 60 个）
           </div>
           <div class="bbp-pagination-links">
            <span class="page-numbers current">
             1
            </span>
            <a class="page-numbers" href="http://cos.name/cn/topic/109765/page/2/">
             2
            </a>
            <span class="page-numbers dots">
             …
            </span>
            <a class="page-numbers" href="http://cos.name/cn/topic/109765/page/4/">
             4
            </a>
            <a class="next page-numbers" href="http://cos.name/cn/topic/109765/page/2/">
             →
            </a>
           </div>
          </div>
          <div class="bbp-no-reply" id="no-reply-109765">
           <div class="bbp-template-notice">
            <p>
             您必须先登录才能回复该主题。
            </p>
           </div>
          </div>
         </div>
        </div>
        <!-- .entry-content -->
        <footer class="entry-meta">
        </footer>
        <!-- .entry-meta -->
       </article>
       <!-- #post -->
       <div class="comments-area" id="comments">
       </div>
       <!-- #comments -->
      </div>
      <!-- #content -->
     </div>
     <!-- #primary -->
     <div class="sidebar-container" id="tertiary" role="complementary">
      <div class="sidebar-inner">
       <div class="widget-area">
        <aside class="widget bbp_widget_login" id="bbp_login_widget-2">
         <h3 class="widget-title">
          登录
         </h3>
         <form action="http://cos.name/cn/wp-login.php" class="bbp-login-form" method="post">
          <fieldset>
           <legend>
            登录
           </legend>
           <div class="bbp-username">
            <label for="user_login">
             用户名:
            </label>
           </div>
           <div class="bbp-password">
            <label for="user_pass">
             密码:
            </label>
           </div>
           <div class="bbp-remember-me">
            <label for="rememberme">
             记住用户名
            </label>
           </div>
           <div class="bbp-submit-wrapper">
            <button class="button submit user-submit" id="user-submit" name="user-submit" tabindex="104" type="submit">
             登录
            </button>
           </div>
           <div class="bbp-login-links">
            <a class="bbp-register-link" href="http://cos.name/cn/wp-login.php?action=register" title="注册">
             注册
            </a>
            <a class="bbp-lostpass-link" href="http://cos.name/cn/wp-login.php?action=lostpassword" title="忘记密码">
             忘记密码
            </a>
           </div>
          </fieldset>
         </form>
        </aside>
        <aside class="widget widget_text" id="text-7">
         <h3 class="widget-title">
          搜索
         </h3>
         <div class="textwidget">
          <form action="http://www.google.com/search" id="bbp-search-form" method="get" onsubmit="Gsitesearch(this)" role="search">
           <div>
           </div>
          </form>
          <form id="bbp-search-form-baidu" onsubmit="g(this)" role="search">
           <div>
           </div>
          </form>
         </div>
        </aside>
        <aside class="widget widget_text" id="text-2">
         <h3 class="widget-title">
          新鲜事
         </h3>
         <div class="textwidget">
          <ul>
           <li>
            <a href="http://cos.name/cn/topics/">
             最新帖子
            </a>
           </li>
           <li>
            <a href="http://cos.name/cn/view/popular/">
             最热门主题
            </a>
           </li>
           <li>
            <a href="http://cos.name/cn/view/no-replies/">
             消灭零回复
            </a>
           </li>
          </ul>
         </div>
        </aside>
        <aside class="widget widget_text" id="text-3">
         <h3 class="widget-title">
          RSS订阅
         </h3>
         <div class="textwidget">
          <ul>
           <li>
            <img src="http://cos.name/wp-includes/images/rss.png"/>
            <a href="http://cos.name/cn/topics/feed/">
             所有主题
            </a>
           </li>
           <li>
            <img src="http://cos.name/wp-includes/images/rss.png"/>
            <a href="http://cos.name/cn/forums/feed/">
             所有帖子
            </a>
           </li>
          </ul>
         </div>
        </aside>
       </div>
       <!-- .widget-area -->
      </div>
      <!-- .sidebar-inner -->
     </div>
     <!-- #tertiary -->
    </div>
    <!-- #main -->
    <footer class="site-footer" id="colophon" role="contentinfo">
     <div class="site-info">
      版权所有 © 2014 统计之都 | 由
      <a href="http://wordpress.org/">
       WordPress
      </a>
      构建 | 主题修改自
      <a href="http://wordpress.org/themes/twentythirteen">
       Twenty Thirteen
      </a>
     </div>
     <!-- .site-info -->
    </footer>
    <!-- #colophon -->
   </div>
   <!-- #page -->
  </div>
 </body>
</html>